/**
 * 菜单类，包含首页，板块和关于
 *
 * 当url的值为空字符串时，指向'首页'页面
 * 其中'about' 为保留字符串，指向'关于'页面
 * 格式为'forum/gid'时，根据 gid 指向某板块页面
 */
class Menu {
  int id;
  String name;
  String url;

  Menu(this.id, this.name, this.url);

  factory Menu.fromJson(Map<String, String> menu) =>
    new Menu(_toInt(menu['id']), menu['name'], menu['url']);

  bool get isHome => url.isEmpty;
  bool get isForum => Uri.parse(url).path == 'forum';
  bool get isAbout => url == 'about';

  String get linkName {
    if(isHome) {
      return 'Home';
    } else if(isForum) {
      return 'Forum';
    } else if(isAbout) {
      return 'About';
    }
  }

  int get gid => isForum ? (_toInt(Uri.parse(url).pathSegments[1])) : -1;

  Map toJson() => {'id': id, 'name': name, 'url': url};
  String toString() => "${toJson()}";
}

int _toInt(id) => id is int ? id : int.parse(id);